import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";

import postcssPresetEnv from "postcss-preset-env";
// https://vite.dev/config/
export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd());
  console.log(env);

  return {
    plugins: [vue()],
    envPrefix: "VITE_", //vite中env的默认前缀
    server: {
      port: 1165,
    },
    build: {
      target: "es2015",
      outDir: "zks",
      assetsInlineLimit: 4096000,
      assetsDir: "assets",
      cssCodeSplit: true, // 所有 CSS 代码合并到一个文件
      // lib: {
      //   entry: ["src/main.js"],
      //   //         情况 2：lib + rollupOptions
      //   // 当 lib 与 rollupOptions 同时存在时：
      //   // lib 负责基础的库打包配置（如 entry、formats）。
      //   // rollupOptions 用于进一步定制打包行为（如 external、plugins、treeshake）。
      //   // fileName 是软件包输出文件的名称，默认为 package.json 中的 "name"。
      //   // 它也可以定义为以 format 和 entryName 为参数的函数，并返回文件名。
      //   fileName: (format, entryName) => `my-lib-${entryName}.${format}.js`,
      //   cssFileName: "my-lib-style",
      //   formats: ["es"],
      // },
      rollupOptions: {
        output: {
          entryFileNames: "js/zks-[hash].js",
          chunkFileNames: "js/chunk-[name]-[hash].js",
          assetFileNames: ({ name }) => {
            // {
            //   type: 'asset',
            //   name: 'my-lib-style.css',
            //   names: [ 'my-lib-style.css' ],
            //   originalFileName: null,
            //   originalFileNames: [],
            //   source: '/* vite internal call, ignore */'
            // }
            if (/\.(gif|jpe?g|png|svg)$/.test(name ?? "")) {
              return "images/[name][extname]";
            }
            if (/\.css$/.test(name ?? "")) {
              return "css/[name][extname]";
            }
            return "static/[name][extname]";
          },
          manualChunks: (id) => {
            if (id.includes("node_modules")) {
              if (id.includes("vue")) return "vue"; // Vue 独立打包
              return "vendor"; // 其他 node_modules 依赖
            }
          },
          chunkSizeWarningLimit: 200, //chunk阈值警告
        },
      },
    },
  };
});
